package verins.DAO;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.swing.JOptionPane;
import verins.BO.LogBO;
import verins.beans.Rol;
import verins.beans.Log;

public class RolDAO {
    public List findAll(){
        List<Rol> lista=null;
        try{

            EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
            EntityManager em = emf.createEntityManager();
            Query query=em.createNamedQuery("Rol.findAll");

            lista=query.getResultList();

            if (em.getTransaction().isActive())
                em.getTransaction().commit();
            em.close();
            emf.close();

        }catch(Exception ex){
            System.out.println(ex.getMessage());
        }
        return lista;
    }

    public boolean save(Rol rol){
          try{
              Log entrada=null;
              // Create the EntityManager
              EntityManagerFactory emf = Persistence.createEntityManagerFactory("verinsPU");
              EntityManager em = emf.createEntityManager();

              if (rol.getIdrol()==null){
                  rol.setIdrol(new Integer(0));
              }

              em.getTransaction().begin();
              //System.out.println(usuario.getIdusuario());
              if (rol.getIdrol()==0){
                  em.persist(rol);
                  entrada=LogBO.crearEntradaLogSeguimiento(rol.getIdrol(), 0, verins.Utils.Constantes.LSEG_REGISTRO, "Se registró el rol: "+rol.getDescripcion());
              } else{
                  verins.Utils.IOmethods.vaciarPermisos(rol);
                  em.merge(rol);
                  entrada=LogBO.crearEntradaLogSeguimiento(rol.getIdrol(), 0, verins.Utils.Constantes.LSEG_MODIFICACION, "Se modificó el rol: "+rol.getDescripcion());
              }

              em.getTransaction().commit();
              em.close();
              emf.close();

              LogBO.registrarLog(entrada);
              return true;
          }catch(Exception ex){
              JOptionPane.showMessageDialog(null, "Error al grabar datos"+ex.getMessage());
              return false;
          }
      }
}
